package tempmethod;

/**
 * @Author: 582895699@qq.com
 * @Desctription: 模板方法
 * @Date: Created in 2021/12/13 17:35
 */
public abstract class AbstractClass {

    /**
     * 由子类实现
     */
    protected abstract void eat();

    /**
     * 由子类实现
     */
    protected abstract void sleep();

    /**
     * 由子类实现
     */
    protected abstract void walk();

    /**
     * 是否响喇叭
     *
     * @return boolean
     */
    protected boolean isAlarm() {
        return true;
    }

    /**
     * 完成任务调度
     * 定义为{@code final}，子类不可重写
     */
    public final void bePerson() {
        this.eat();
        this.sleep();
        this.walk();
    }
}
